//js隐式转换

// 比较运算 x==y, 其中 x 和 y 是值，返回 true 或者 false。这样的比较按如下方式进行：

// 1、若 Type(x) 与 Type(y) 相同， 则

//     1* 若 Type(x) 为 Undefined， 返回 true。
//     2* 若 Type(x) 为 Null， 返回 true。
//     3* 若 Type(x) 为 Number， 则

//         (1)、若 x 为 NaN， 返回 false。
//         (2)、若 y 为 NaN， 返回 false。
//         (3)、若 x 与 y 为相等数值， 返回 true。
//         (4)、若 x 为 +0 且 y 为 −0， 返回 true。
//         (5)、若 x 为 −0 且 y 为 +0， 返回 true。
//         (6)、返回 false。

//     4* 若 Type(x) 为 String, 则当 x 和 y 为完全相同的字符序列（长度相等且相同字符在相同位置）时返回 true。 否则， 返回 false。
//     5* 若 Type(x) 为 Boolean, 当 x 和 y 为同为 true 或者同为 false 时返回 true。 否则， 返回 false。
//     6*  当 x 和 y 为引用同一对象时返回 true。否则，返回 false。

// 2、若 x 为 null 且 y 为 undefined， 返回 true。
// 3、若 x 为 undefined 且 y 为 null， 返回 true。
// 4、若 Type(x) 为 Number 且 Type(y) 为 String，返回比较 x == ToNumber(y) 的结果。
// 5、若 Type(x) 为 String 且 Type(y) 为 Number，返回比较 ToNumber(x) == y 的结果。
// 6、若 Type(x) 为 Boolean， 返回比较 ToNumber(x) == y 的结果。
// 7、若 Type(y) 为 Boolean， 返回比较 x == ToNumber(y) 的结果。
// 8、若 Type(x) 为 String 或 Number，且 Type(y) 为 Object，返回比较 x == ToPrimitive(y) 的结果。
// 9、若 Type(x) 为 Object 且 Type(y) 为 String 或 Number， 返回比较 ToPrimitive(x) == y 的结果。
// 10、返回 false。